/*
 * MoveThought.hpp
 *
 *  Created on: 05-01-2011
 *      Author: Piotr
 */

#pragma once

#include "AI/thoughts/Thought.hpp"
#include "geometry/Vector.hpp"

/*
 * Represents a move command in given direction with given length.
 */
class MoveThought: public Thought
{
	private:
		Vector direction;
		float length;

	public:
		MoveThought();
		explicit MoveThought(const Vector& moveVector);
		MoveThought(const Vector& direction, float length);

		const Vector& getDirection();
		void setDirection(const Vector& direction);
		float getLength() const;
		Vector getMoveVector() const;
		virtual void execute(Individual* individual);

		virtual ~MoveThought();
};
